{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "c:\\Users\\jaesc2\\GitHub\\skforecast\n",
      "0.18.0\n"
     ]
    }
   ],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "import sys\n",
    "from pathlib import Path\n",
    "path = str(Path.cwd().parent)\n",
    "print(path)\n",
    "sys.path.insert(1, path)\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import skforecast\n",
    "\n",
    "print(skforecast.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Libraries\n",
    "# ==============================================================================\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import Ridge\n",
    "from lightgbm import LGBMRegressor\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from skforecast.datasets import fetch_dataset\n",
    "from skforecast.preprocessing import RollingFeatures\n",
    "from skforecast.recursive import ForecasterRecursive\n",
    "from skforecast.model_selection import TimeSeriesFold\n",
    "from skforecast.model_selection import backtesting_forecaster\n",
    "from skforecast.plot import plot_prediction_intervals, set_dark_theme, backtesting_gif_creator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "h2o\n",
      "---\n",
      "Monthly expenditure ($AUD) on corticosteroid drugs that the Australian health\n",
      "system had between 1991 and 2008.\n",
      "Hyndman R (2023). fpp3: Data for Forecasting: Principles and Practice(3rd\n",
      "Edition). http://pkg.robjhyndman.com/fpp3package/,https://github.com/robjhyndman\n",
      "/fpp3package, http://OTexts.com/fpp3.\n",
      "Shape of the dataset: (204, 2)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>datetime</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1991-07-01</th>\n",
       "      <td>0.429795</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1991-08-01</th>\n",
       "      <td>0.400906</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1991-09-01</th>\n",
       "      <td>0.432159</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   y\n",
       "datetime            \n",
       "1991-07-01  0.429795\n",
       "1991-08-01  0.400906\n",
       "1991-09-01  0.432159"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Download data\n",
    "# ==============================================================================\n",
    "data = fetch_dataset(\n",
    "    name=\"h2o\", raw=True, kwargs_read_csv={\"names\": [\"y\", \"datetime\"], \"header\": 0}\n",
    ")\n",
    "\n",
    "# Data preprocessing\n",
    "# ==============================================================================\n",
    "data['datetime'] = pd.to_datetime(data['datetime'], format='%Y-%m-%d')\n",
    "data = data.set_index('datetime')\n",
    "data = data.asfreq('MS')\n",
    "data = data[['y']]\n",
    "data = data.sort_index()\n",
    "data.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train dates      : 1991-07-01 00:00:00 --- 2002-01-01 00:00:00  (n=127)\n",
      "Validation dates : 2002-02-01 00:00:00 --- 2008-06-01 00:00:00  (n=77)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Train-validation dates\n",
    "# ==============================================================================\n",
    "end_train = '2002-01-01 23:59:00'\n",
    "\n",
    "print(\n",
    "    f\"Train dates      : {data.index.min()} --- {data.loc[:end_train].index.max()}\"\n",
    "    f\"  (n={len(data.loc[:end_train])})\"\n",
    ")\n",
    "print(\n",
    "    f\"Validation dates : {data.loc[end_train:].index.min()} --- {data.index.max()}\"\n",
    "    f\"  (n={len(data.loc[end_train:])})\"\n",
    ")\n",
    "\n",
    "# Plot\n",
    "# ==============================================================================\n",
    "set_dark_theme()\n",
    "fig, ax = plt.subplots(figsize=(6, 3))\n",
    "data.loc[:end_train, 'y'].plot(ax=ax, label='train')\n",
    "data.loc[end_train:, 'y'].plot(ax=ax, label='validation')\n",
    "ax.legend()\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Backtesting without refit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "window_size        = 12\n",
    "steps              = 10\n",
    "initial_train_size = 96\n",
    "fps = 2\n",
    "dpi = 120"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = TimeSeriesFold(\n",
    "         steps                 = steps,\n",
    "         initial_train_size    = initial_train_size,\n",
    "         window_size           = window_size,\n",
    "         refit                 = False,\n",
    "         gap                   = 0,\n",
    "         allow_incomplete_fold = True,\n",
    "         verbose               = False\n",
    "     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WindowsPath('c:/Users/jaesc2/GitHub/skforecast/tools/img/time-series-backtesting-forecasting-no-refit.gif')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.rcdefaults()   # Restaura todos los rcParams al estado por defecto\n",
    "plt.style.use('default')  # Aplica el estilo 'default'\n",
    "backtesting_gif_creator(\n",
    "    data             = data['y'],\n",
    "    cv               = cv,\n",
    "    series_to_plot   = None,\n",
    "    plot_last_window = False,\n",
    "    filename         = \"img/time-series-backtesting-forecasting-no-refit.gif\",\n",
    "    figsize          = (9, 4),\n",
    "    plt_style        = 'ggplot',\n",
    "    title_template   = \"Backtesting no refit — Fold {fold_num}\",\n",
    "    fps              = fps,\n",
    "    dpi              = dpi\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Backtesting with refit and increasing training size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = TimeSeriesFold(\n",
    "         steps                 = steps,\n",
    "         initial_train_size    = initial_train_size,\n",
    "         window_size           = window_size,\n",
    "         refit                 = True,\n",
    "         fixed_train_size      = False,\n",
    "         gap                   = 0,\n",
    "         allow_incomplete_fold = True,\n",
    "         verbose               = False\n",
    "     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WindowsPath('c:/Users/jaesc2/GitHub/skforecast/tools/img/time-series-backtesting-forecasting-with-refit.gif')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.rcdefaults()   # Restaura todos los rcParams al estado por defecto\n",
    "plt.style.use('default')  # Aplica el estilo 'default'\n",
    "backtesting_gif_creator(\n",
    "    data             = data['y'],\n",
    "    cv               = cv,\n",
    "    series_to_plot   = None,\n",
    "    plot_last_window = False,\n",
    "    filename         = \"img/time-series-backtesting-forecasting-with-refit.gif\",\n",
    "    figsize          = (9, 4),\n",
    "    plt_style        = 'ggplot',\n",
    "    title_template   = \"Backtesting with refit — Fold {fold_num} (refit: {refit})\",\n",
    "    fps              = fps,\n",
    "    dpi              = dpi\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Backtesting with refit and fixed training size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = TimeSeriesFold(\n",
    "         steps                 = steps,\n",
    "         initial_train_size    = initial_train_size,\n",
    "         window_size           = window_size,\n",
    "         refit                 = True,\n",
    "         fixed_train_size      = True,\n",
    "         gap                   = 0,\n",
    "         allow_incomplete_fold = True,\n",
    "         verbose               = False\n",
    "     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WindowsPath('c:/Users/jaesc2/GitHub/skforecast/tools/img/time-series-backtesting-forecasting-refit-fixed-train-size.gif')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.rcdefaults()   # Restaura todos los rcParams al estado por defecto\n",
    "plt.style.use('default')  # Aplica el estilo 'default'\n",
    "backtesting_gif_creator(\n",
    "    data             = data['y'],\n",
    "    cv               = cv,\n",
    "    series_to_plot   = None,\n",
    "    plot_last_window = False,\n",
    "    filename         = \"img/time-series-backtesting-forecasting-refit-fixed-train-size.gif\",\n",
    "    figsize          = (9, 4),\n",
    "    plt_style        = 'ggplot',\n",
    "    title_template   = \"Backtesting with refit and fixed train size — Fold {fold_num} (refit: {refit})\",\n",
    "    fps              = fps,\n",
    "    dpi              = dpi\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Backtesting with intermittent refit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = TimeSeriesFold(\n",
    "         steps                 = steps,\n",
    "         initial_train_size    = initial_train_size,\n",
    "         window_size           = window_size,\n",
    "         refit                 = 4,\n",
    "         fixed_train_size      = False,\n",
    "         gap                   = 0,\n",
    "         allow_incomplete_fold = True,\n",
    "         verbose               = False\n",
    "     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WindowsPath('c:/Users/jaesc2/GitHub/skforecast/tools/img/time-series-backtesting-forecasting-intermittent-refit.gif')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.rcdefaults()   # Restaura todos los rcParams al estado por defecto\n",
    "plt.style.use('default')  # Aplica el estilo 'default'\n",
    "backtesting_gif_creator(\n",
    "    data             = data['y'],\n",
    "    cv               = cv,\n",
    "    series_to_plot   = None,\n",
    "    plot_last_window = False,\n",
    "    filename         = \"img/time-series-backtesting-forecasting-intermittent-refit.gif\",\n",
    "    figsize          = (9, 4),\n",
    "    plt_style        = 'ggplot',\n",
    "    title_template   = \"Backtesting with intermittent refit — Fold {fold_num} (refit: {refit})\",\n",
    "    fps              = fps,\n",
    "    dpi              = dpi\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Backtesting including gap"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = TimeSeriesFold(\n",
    "         steps                 = steps,\n",
    "         initial_train_size    = initial_train_size,\n",
    "         window_size           = window_size,\n",
    "         refit                 = True,\n",
    "         fixed_train_size      = False,\n",
    "         gap                   = 5,\n",
    "         allow_incomplete_fold = True,\n",
    "         verbose               = False\n",
    "     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WindowsPath('c:/Users/jaesc2/GitHub/skforecast/tools/img/time-series-backtesting-forecasting-with-gap.gif')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.rcdefaults()   # Restaura todos los rcParams al estado por defecto\n",
    "plt.style.use('default')  # Aplica el estilo 'default'\n",
    "backtesting_gif_creator(\n",
    "    data             = data['y'],\n",
    "    cv               = cv,\n",
    "    series_to_plot   = None,\n",
    "    plot_last_window = False,\n",
    "    filename         = \"img/time-series-backtesting-forecasting-with-gap.gif\",\n",
    "    figsize          = (9, 4),\n",
    "    plt_style        = 'ggplot',\n",
    "    title_template   = \"Backtesting with refit and gap — Fold {fold_num} (refit: {refit})\",\n",
    "    fps              = fps,\n",
    "    dpi              = dpi\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Backtesting with fold stride"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = TimeSeriesFold(\n",
    "         steps                 = steps,\n",
    "         initial_train_size    = initial_train_size,\n",
    "         fold_stride           = int(steps / 2),\n",
    "         window_size           = window_size,\n",
    "         refit                 = True,\n",
    "         fixed_train_size      = False,\n",
    "         gap                   = 0,\n",
    "         allow_incomplete_fold = True,\n",
    "         verbose               = False\n",
    "     )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "WindowsPath('c:/Users/jaesc2/GitHub/skforecast/tools/img/time-series-backtesting-forecasting-fold-stride.gif')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "plt.rcdefaults()   # Restaura todos los rcParams al estado por defecto\n",
    "plt.style.use('default')  # Aplica el estilo 'default'\n",
    "backtesting_gif_creator(\n",
    "    data             = data['y'],\n",
    "    cv               = cv,\n",
    "    series_to_plot   = None,\n",
    "    plot_last_window = False,\n",
    "    filename         = \"img/time-series-backtesting-forecasting-fold-stride.gif\",\n",
    "    figsize          = (9, 4),\n",
    "    plt_style        = 'ggplot',\n",
    "    title_template   = \"Backtesting with fold stride — Fold {fold_num} (refit: {refit})\",\n",
    "    fps              = fps,\n",
    "    dpi              = dpi\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "skforecast_py12",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.11"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
